<?php

require_once 'SessionController.php';
if(!verificaLogin())return;
if(!verificaTorneo())return;

require_once '../../../../Utils/Conexion.php';


//VARIABLES DE CONTROL DEL LISTADO
$torneo = $_SESSION["torneo"];
$accion = (isset($_POST["accion"]))? $_POST["accion"]:"LISTAR";
$pagina = (isset($_POST["pagina"]))? $_POST["pagina"]:1;
$buscar = (isset($_POST["buscar"]))? $_POST["buscar"]:"";
$valor = (isset($_POST["valor"]))? $_POST["valor"]:"";


//ACCIONES
if ($accion === "GET_TORNEO_NOMBRE") {
    getTorneoNombre();
} else if ($accion === "GET_TORNEO_DATA") {
    getTorneoData();
} else if ($accion === "SET_ESTADO") {
    setClockEstado($valor);
} else if ($accion === "GET_ESTADO") {
    getClockEstado();
} else if ($accion === "LISTAR") {
    listar();
}


function getTorneoNombre(){
    global $torneo;
    echo "<span class='glyphicon glyphicon-star'></span>&nbsp; ".$torneo['nombre'];
}


function getTorneoData(){
    global $torneo;
    $query = "SELECT pt.*, pe.nivel_max_recompras, "
            . "(SELECT MAX(puesto) FROM poker_pay_out WHERE poker_torneo_id = ".$torneo['id'].") AS nro_premios "
            . "FROM poker_torneos pt, poker_estructuras pe "
            . "WHERE pt.poker_estructura_id = pe.id "
            . "AND pt.id = ".$torneo['id']." "
            . "AND pt.finalizado IS FALSE "
            . "LIMIT 1";
    $consulta = consultar($query);
    if($consulta) {
        $_SESSION['torneo'] = $consulta[0];
        $torneo = $_SESSION['torneo'];
    } else {
        unsetTorneo();
    }
    
    //CIEGAS
    $query = "SELECT ante, small_blind, big_blind 
              FROM poker_estructura_detalles 
              WHERE poker_estructura_id = ".$torneo['poker_estructura_id']." 
              AND nivel = ".$torneo['nivel_actual']." LIMIT 1";
    $blinds = consultar($query);
    $ciegas = (!$blinds)?"?? / ??":number_format($blinds[0]['small_blind'], 0, ",", ".")." / ".number_format($blinds[0]['big_blind'], 0, ",", ".");
    $ante = (!$blinds)?"?":number_format($blinds[0]['ante'], 0, ",", ".");
    
    //PUNTOS PROMEDIO
    $puntosPromedio = 0;
    if($torneo['total_compitiendo'] > 0) {
        $puntosPromedio = $torneo['total_puntos'] / $torneo['total_compitiendo'];
    }
            
    $respuesta = number_format($torneo['total_inscriptos'], 0, ",", ".")."~".
                 number_format($torneo['total_compitiendo'], 0, ",", ".")."~".                 
                 number_format($torneo['total_puntos'], 0, ",", ".")."~".
                 number_format($puntosPromedio, 0, ",", ".")."~".
                 number_format($torneo['total_recompras'], 0, ",", ".")."~".
                 number_format($torneo['total_addons'], 0, ",", ".")."~".
                 number_format($torneo['pozo_acumulado'], 0, ",", ".")."~".
                 number_format($torneo['nivel_actual'], 0, ",", ".")."~".
                 $ante."~".$ciegas;    
    echo $respuesta;
}


//CAMBIA EL ESTADO EN LA SESSION DEL POKER CLOCK
function setClockEstado($estado) {
    global $torneo;    
    //SESSION POKER CLOCK
    sessionPockerClock($torneo['poker_clock']);
    
    $_SESSION['ESTADO'] = $estado;
    
    //VUELVE A LA SESSION ACTUAL
    sessionRestore();
}


//OBTIENE EL ESTADO ACTUAL DEL POKER CLOCK
function getClockEstado() {
    global $torneo;
    $estado = "DESHABILITADO";
    if($torneo['habilitar_juego']) {
        //SESSION POKER CLOCK
        sessionPockerClock($torneo['poker_clock']);

        $estado = (isset($_SESSION['ESTADO']))?$_SESSION['ESTADO']:"DESCONOCIDO";
        
        //VUELVE A LA SESSION ACTUAL
        sessionRestore();
    }
    echo $estado;
}



//LISTADO
function listar() {
    global $pagina, $buscar, $torneo;

    if (!$torneo) {
        unsetTorneo();
    }
    $registrosPorPagina = 3;
    $maxRegistros = $torneo['jugadores_x_mesa']*$registrosPorPagina;
    $rangoPaginador = 7;
    $cantInicial = ($pagina - 1) * $registrosPorPagina;
    $cantFinal = $cantInicial + $registrosPorPagina;
    $nroInicial = $cantInicial + 1;
    $paginas = 0;
    $total = 0;
    $busqueda = "";

    //ARMO CONSULTAS
    
    //BUSQUEDA
    if (strlen($buscar) > 0) {
        if(strpos($buscar, "~")!=FALSE) {
            $d = explode("~",$buscar);
            if(sizeof($d)==1) {
                $busqueda = ($d[0]>0)?"AND ps.mesa_numero = ".$d[0]." ":"";
            } else {
                $busqueda = (($d[0]>0)?" AND ps.mesa_numero = ".$d[0]." ":"").(($d[1]>0)?" AND ps.mesa_posicion = ".$d[1]." ":"");
            }
        } else {
            $busqueda = "AND (p.documento LIKE '%$buscar%' OR p.apenom LIKE '%$buscar%' 
                         OR pais.sigla LIKE '%$buscar%' OR ps.mesa_numero LIKE '%$buscar%' 
                         OR ps.mesa_posicion LIKE '%$buscar%' OR ps.codigo LIKE '$buscar' 
                         OR ps.persona_id LIKE '$buscar') ";
        }
    }

    
    //CUERPO DE LA CONSULTA, LOS SELECTS VARIAN SEGUN EL CASO    
    $from =  "FROM poker_specifics AS ps 
              LEFT JOIN personas AS p ON p.id = ps.persona_id 
              LEFT JOIN ciudades AS c ON c.id = p.ciudad_id 
              LEFT JOIN paises AS pais ON pais.id = c.pais_id ";
    $where = "WHERE ps.poker_torneo_id = ".$torneo['id']." AND ps.estado = 'JUGANDO' $busqueda ";
    $order = "ORDER BY mesa_numero ASC ";
    $limit = "LIMIT $cantInicial, $registrosPorPagina";
    
    
    //DETERMINA LA CANTIDAD DE MESAS DISTINTAS EXISTENTES    
    $queryCantidad = "SELECT COUNT(DISTINCT(ps.mesa_numero)) AS cant $from $where";
    $respuesta = consultar($queryCantidad);
    if ($respuesta) {
        $total = $respuesta[0]['cant'];
        $paginas = ceil($total / $registrosPorPagina);
        if ($cantFinal > $total) {
            $cantFinal = $total;
        }
    }
    
    
    //OBTIENE EL LISTADO DE LAS 3 MESAS A MOSTRAR Y GENERA EL FILTRO CORRESPONDIENTE
    $queryListMesas = "SELECT DISTINCT(ps.mesa_numero) AS num $from $where $order $limit";
    $listMesas = consultar($queryListMesas);
    $filtroMesas = FALSE;
    if ($listMesas) {
        $filtroMesas = " AND (";
        $or = "";
        foreach ($listMesas as $m) {
            $filtroMesas .= $or." ps.mesa_numero = ".$m['num']." " ;
            if($m['num'] == NULL || $m['num'] = ""){
                $filtroMesas .= $or." ps.mesa_numero IS NULL " ;
            }
            $or = " OR ";
        }
        $filtroMesas .= " ) ";
    }

    $personas = FALSE;
    if($filtroMesas){
        $queryList = "SELECT ps.id AS id, p.apenom AS apenom, IFNULL(pais.sigla,'-') AS pais , 
                      IFNULL(ps.mesa_numero,0) AS mesa, IFNULL(ps.mesa_posicion,0) AS posicion 
                      $from $where $filtroMesas 
                      ORDER BY mesa_numero ASC, mesa_posicion ASC 
                      LIMIT 0, $maxRegistros";
        
        $personas = consultar($queryList);
    }
    $ultimoId = FALSE;
    $pos = 1;
    $cantidadPersonas = 0;
    if ($personas) {
        $cantidadPersonas = sizeof($personas);
        $mesa = 0;
        $reg = 0;
        $ultimoRegistro = FALSE;
        for($table=1;$table<=$registrosPorPagina;$table++) {
            if($ultimoRegistro) break;
            $mesa = intval($personas[$reg]['mesa']);
            $nombreMesa = "Sin Ubicación";
            $panel = "panel-danger";
            if($personas[$reg]['mesa']>0) {
                $nombreMesa = "Mesa N&deg; ".$personas[$reg]['mesa'];
                $panel = "panel-success";
            }
            echo "<div class='col-sm-4'>
                    <div class='panel $panel' id='mesa".$personas[$reg]['mesa']."' >
                        <div class='panel-heading'>
                            <h4 class='panel-title text-center' style='font-size:24px;'>$nombreMesa</h4>
                        </div>
                        <table class='table table-striped table-hover '>
                            <thead>
                              <tr>
                                <th class='text-center'>POS</th>
                                <th class='text-left'>NOMBRE Y APELLIDO</th>
                                <th class='text-center'>PAIS</th>
                              </tr>
                            </thead>
                            <tbody>";
            
            //CONTENIDO - PARTICIPANTES EN LA MESA
            for($pos=1;$pos<=intval($torneo['jugadores_x_mesa']);$pos++) {
                $ultimoId = $personas[$reg]['id'];
                if($mesa == $personas[$reg]['mesa']) {
                    if ($personas[$reg]['posicion'] == 0) {
                        printParticipante($personas[$reg]['id'], "-", $personas[$reg]['apenom'], $personas[$reg]['pais']);
                        if($reg == sizeof($personas)-1) {
                            $ultimoRegistro = TRUE;
                        } else {
                            $reg++;
                        }
                    } else {
                        if($pos == intval($personas[$reg]['posicion'])) {
                            printParticipante($personas[$reg]['id'], $personas[$reg]['posicion'], $personas[$reg]['apenom'], $personas[$reg]['pais']);
                            if($reg == sizeof($personas)-1) {
                                $ultimoRegistro = TRUE;
                            } else {
                                $reg++;
                            }
                        } else {
                            printParticipante(NULL,$pos, "-", "-");
                        }
                    }
                } else {
                    printParticipante(NULL,$pos, "-", "-");
                }
            }
            echo "</tbody></table></div></div>";
        }
        echo "<nav class='navbar navbar-default navbar-fixed-bottom' role='navigation' style='width: 78%; left: 281px;' >
                <div class='container-fluid'>
                    <ul class='nav navbar-nav navbar-left'>
                        <p class='navbar-text'>Mostrando del $nroInicial al $cantFinal de $total Mesas</p>
                    </ul>";
        if ($paginas > 1) {
            $anterior = $pagina - 1;
            $siguiente = $pagina + 1;
            echo "<div class='navbar-right'>
                    <div class='btn-group'>";
            if ($pagina == 1) {
                echo "<button type='button' class='btn btn-default navbar-btn disabled' style='min-width:50px;' onclick='paginar($anterior)'>«</button>";
            } else {
                echo "<button type='button' class='btn btn-default navbar-btn' style='min-width:50px;' onclick='paginar($anterior)'>«</button>";
            }

            $rango = getRange($pagina, $paginas, $rangoPaginador);
            foreach ($rango as $r) {
                if ($r == $pagina) {
                    echo "<button type='button' class='btn btn-default navbar-btn active' style='min-width:50px;' onclick='paginar($r)'>$r</button>";
                } else {
                    echo "<button type='button' class='btn btn-default navbar-btn' style='min-width:50px;' onclick='paginar($r)'>$r</button>";
                }
            }

            if ($pagina < $paginas) {
                echo "<button type='button' class='btn btn-default navbar-btn' style='min-width:50px;' onclick='paginar($siguiente)'>»</button>";
            } else {
                echo "<button type='button' class='btn btn-default navbar-btn disabled' style='min-width:50px;' onclick='paginar($siguiente)'>»</button>";
            }
            echo"</div></div>";
        }
        echo "</div></nav>";
        if ($cantidadPersonas == 1 && $ultimoId && $buscar!="") {
            echo "<script type='text/javascript'> menuParticipante($ultimoId); </script>";
        }
    } else {
        if($torneo["total_inscriptos"]>0 && $torneo["total_compitiendo"]==0) {
            setClockEstado("PAUSE");
            die("<div class='col-sm-12 text-center'><h1 style='font-size:70px;'><br><br>Torneo Finalizado</h1></div>");
        } else {
            die("<div class='col-sm-12 text-center'><h1 style='font-size:70px;'><br><br>No se encontró ningún Participante...</h1></div>");
        }
    }
}


function printParticipante($id, $posicion, $apenom, $pais){
    $cmd = "";
    if($id != NULL) {
        $cmd = " onclick='menuParticipante($id)' style='cursor: pointer; cursor: hand;' ";
    }
    echo "<tr $cmd>
            <td class='text-center'>$posicion</td>
            <td class='text-left'>$apenom</td>
            <td class='text-center'>$pais</td>
        </tr>";
}

function getRange($actual, $total, $cantidad) {
    $medio = floor($cantidad / 2);
    $ini = max($actual - $medio, 1);
    $fin = min($ini + $cantidad - 1, $total);
    if (($fin - $ini) < ($cantidad - 1)) {
        $ini = max($total - $cantidad + 1, 1);
    }
    return range($ini, $fin);
}
